'when' ์ ์ ์ฌ์ฉํ ๊ณ ๊ธ ์๋ฐ์คํฌ๋ฆฝํธ ํจํด ๋งค์นญ์ผ๋ก ๊ฐ๋ ฅํ ์กฐ๊ฑด๋ถ ํ๊ฐ๋ฅผ ํ์ํ๊ณ ์ฝ๋ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ํจํด ๋งค์นญ: 'When'์ ์ฌ์ฉํ ์กฐ๊ฑด๋ถ ํจํด ํ๊ฐ
์ ํต์ ์ผ๋ก ๋์ ์ด๊ณ ์ ์ฐํ ํน์ฑ์ผ๋ก ์๋ ค์ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ ์ฐจ ๋ ๊ตฌ์กฐ์ ์ด๊ณ ์ ์ธ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ ์ฅ๋ คํ๋ ๊ธฐ๋ฅ๋ค์ ์ฑํํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌํ ๊ธฐ๋ฅ ์ค ํ๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์์ ํตํด ๋๊ฐ์ ๋ํ๋ด๊ณ ์๋ ๊ฒ์ด ๋ฐ๋ก ํจํด ๋งค์นญ์ ๋๋ค. ํจํด ๋งค์นญ์ ํตํด ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ถํดํ๊ณ ํด๋น ๊ตฌ์กฐ ๋ด์ ๊ตฌ์กฐ์ ๊ฐ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ ํจํด ๋งค์นญ ๊ตฌํ์์ ํํ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ์ธ 'when' ์ ์ ์ฌ์ฉํ ๊ฐ๋ ฅํ ์กฐ๊ฑด๋ถ ํจํด ํ๊ฐ ๊ฐ๋ ์ ๋ํด ์์ธํ ์์๋ด ๋๋ค.
ํจํด ๋งค์นญ์ด๋ ๋ฌด์์ธ๊ฐ?
ํต์ฌ์ ์ผ๋ก, ํจํด ๋งค์นญ์ ๊ฐ์ ํจํด๊ณผ ๋น๊ตํ์ฌ ํ์ธํ๊ณ , ๊ฐ์ด ํจํด๊ณผ ์ผ์นํ๋ฉด ํด๋น ๊ฐ์ ์ผ๋ถ๋ฅผ ์ถ์ถํ์ฌ ์ถ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๊ธฐ์ ์ ๋๋ค. ๋ณต์กํ๊ฒ ์ค์ฒฉ๋ `if` ๋ฌธ์ด๋ ์ฅํฉํ `switch` ๋ฌธ์ ๋ํ ๋ ํํ๋ ฅ ์๊ณ ๊ฐ๊ฒฐํ ๋์์ผ๋ก ์๊ฐํ ์ ์์ต๋๋ค. ํจํด ๋งค์นญ์ Haskell, Scala, F#๊ณผ ๊ฐ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์ด์ฌ๊ณผ ๊ฐ์ ์ฃผ๋ฅ ์ธ์ด์๋ ์ ์ฐจ ๋์ ๋๊ณ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ํจํด ๋งค์นญ์ ์ผ๋ฐ์ ์ผ๋ก 'ts-pattern'(TypeScript์ฉ)๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ฌ ECMAScript์์ ๊ณ ๋ ค ์ค์ธ ํจํด ๋งค์นญ ์ ์๊ณผ ๊ฐ์ ์ ์์ ํตํด ๊ตฌํ๋ฉ๋๋ค.
'When'์ ํ: ์กฐ๊ฑด๋ถ ํจํด ํ๊ฐ
'when' ์ ์ ํจํด์ ์กฐ๊ฑด๋ถ ๋ ผ๋ฆฌ๋ฅผ ์ถ๊ฐํ ์ ์๊ฒ ํจ์ผ๋ก์จ ๊ธฐ๋ณธ ํจํด ๋งค์นญ์ ๊ธฐ๋ฅ์ ํ์ฅํฉ๋๋ค. ์ฆ, ๊ฐ์ ๊ตฌ์กฐ๊ฐ ์ผ์นํ๊ณ 'when' ์ ์ ๋ช ์๋ ์กฐ๊ฑด์ด ์ฐธ์ผ๋ก ํ๊ฐ๋ ๊ฒฝ์ฐ์๋ง ํจํด์ด ์ผ์นํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ํจํด ๋งค์นญ ๋ ผ๋ฆฌ์ ์๋นํ ์ ์ฐ์ฑ๊ณผ ์ ๋ฐ๋๋ฅผ ๋ํด์ค๋๋ค.
๊ธ๋ก๋ฒ ์ ์์๊ฑฐ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํด ๋ด ์๋ค. ์ฌ์ฉ์์ ์์น์ ์๋น ์ต๊ด์ ๋ฐ๋ผ ๋ค๋ฅธ ํ ์ธ์ ์ ์ฉํ๊ณ ์ถ์ ์ ์์ต๋๋ค. 'when'์ด ์๋ค๋ฉด ํจํด ๋งค์นญ ์ผ์ด์ค ์์ ์ค์ฒฉ๋ `if` ๋ฌธ์ ์ฌ์ฉํ๊ฒ ๋์ด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค. 'when'์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์กฐ๊ฑด๋ค์ ํจํด ๋ด์์ ์ง์ ํํํ ์ ์์ต๋๋ค.
์์
์ค์ฉ์ ์ธ ์์๋ฅผ ํตํด ์ด๋ฅผ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. 'when' ๊ธฐ๋ฅ์ด ์๋ ๊ฐ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ๊ตฌ๋ฌธ์ ์ฌ์ฉ ์ค์ธ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์์ ์ ์ํด ์ฃผ์ธ์.
์์ 1: 'When'์ ์ฌ์ฉํ ๊ธฐ๋ณธ ํ์ ๊ฒ์ฌ
์์คํ ์ด ์์ ํ๋ ๋ค์ํ ์ ํ์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค:
function processMessage(message) {
match(message)
.with({ type: "text", content: P.string }, (msg) => {
console.log(`ํ
์คํธ ๋ฉ์์ง ์ฒ๋ฆฌ ์ค: ${msg.content}`);
})
.with({ type: "image", url: P.string }, (msg) => {
console.log(`์ด๋ฏธ์ง ๋ฉ์์ง ์ฒ๋ฆฌ ์ค: ${msg.url}`);
})
.otherwise(() => {
console.log("์ ์ ์๋ ๋ฉ์์ง ์ ํ");
});
}
processMessage({ type: "text", content: "์๋
ํ์ธ์!" }); // ์ถ๋ ฅ: ํ
์คํธ ๋ฉ์์ง ์ฒ๋ฆฌ ์ค: ์๋
ํ์ธ์!
processMessage({ type: "image", url: "https://example.com/image.jpg" }); // ์ถ๋ ฅ: ์ด๋ฏธ์ง ๋ฉ์์ง ์ฒ๋ฆฌ ์ค: https://example.com/image.jpg
processMessage({ type: "audio", file: "audio.mp3" }); // ์ถ๋ ฅ: ์ ์ ์๋ ๋ฉ์์ง ์ ํ
์ด ๊ธฐ๋ณธ ์์์์๋ `type` ์์ฑ๊ณผ `content`๋ `url` ๊ฐ์ ๋ค๋ฅธ ์์ฑ์ ์กด์ฌ ์ฌ๋ถ์ ๋ฐ๋ผ ๋งค์นญ์ ์ํํฉ๋๋ค. `P.string`์ ๋ฐ์ดํฐ ํ์ ์ ํ์ธํ๊ธฐ ์ํ ํ๋ ์ด์คํ๋์ ๋๋ค.
์์ 2: ์ง์ญ ๋ฐ ์๋น์ ๊ธฐ๋ฐํ ์กฐ๊ฑด๋ถ ํ ์ธ ๊ณ์ฐ
์ด์ 'when' ์ ์ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์ ์์น์ ์๋น์ ๋ฐ๋ฅธ ํ ์ธ์ ์ฒ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค:
function calculateDiscount(user) {
match(user)
.with(
{
country: "USA",
spending: P.number.gt(100) //P.number.gt(100)์ spending์ด 100๋ณด๋ค ํฐ์ง ํ์ธํฉ๋๋ค
},
() => {
console.log("100๋ฌ๋ฌ ์ด์ ์๋นํ ๋ฏธ๊ตญ ์ฌ์ฉ์์๊ฒ 10% ํ ์ธ ์ ์ฉ");
return 0.1;
}
)
.with(
{
country: "Canada",
spending: P.number.gt(50)
},
() => {
console.log("50๋ฌ๋ฌ ์ด์ ์๋นํ ์บ๋๋ค ์ฌ์ฉ์์๊ฒ 5% ํ ์ธ ์ ์ฉ");
return 0.05;
}
)
.with({ country: P.string }, (u) => {
console.log(`${u.country} ์ฌ์ฉ์์๊ฒ๋ ํน๋ณ ํ ์ธ์ด ์์ต๋๋ค`);
return 0;
})
.otherwise(() => {
console.log("ํ ์ธ ๋ฏธ์ ์ฉ.");
return 0;
});
}
const user1 = { country: "USA", spending: 150 };
const user2 = { country: "Canada", spending: 75 };
const user3 = { country: "UK", spending: 200 };
console.log(`์ฌ์ฉ์1 ํ ์ธ: ${calculateDiscount(user1)}`); // ์ถ๋ ฅ: 100๋ฌ๋ฌ ์ด์ ์๋นํ ๋ฏธ๊ตญ ์ฌ์ฉ์์๊ฒ 10% ํ ์ธ ์ ์ฉ; ์ฌ์ฉ์1 ํ ์ธ: 0.1
console.log(`์ฌ์ฉ์2 ํ ์ธ: ${calculateDiscount(user2)}`); // ์ถ๋ ฅ: 50๋ฌ๋ฌ ์ด์ ์๋นํ ์บ๋๋ค ์ฌ์ฉ์์๊ฒ 5% ํ ์ธ ์ ์ฉ; ์ฌ์ฉ์2 ํ ์ธ: 0.05
console.log(`์ฌ์ฉ์3 ํ ์ธ: ${calculateDiscount(user3)}`); // ์ถ๋ ฅ: UK ์ฌ์ฉ์์๊ฒ๋ ํน๋ณ ํ ์ธ์ด ์์ต๋๋ค; ์ฌ์ฉ์3 ํ ์ธ: 0
์ด ์์์์, 'when' ์ (`with` ํจ์ ๋ด์ ์๋ฌต์ ์ผ๋ก ํํ๋จ)์ `spending` ์์ฑ์ ๋ํ ์กฐ๊ฑด์ ๋ช ์ํ ์ ์๊ฒ ํด์ค๋๋ค. ํ ์ธ์ ์ ์ฉํ๊ธฐ ์ ์ ์ง์ถ์ก์ด ํน์ ์๊ณ๊ฐ์ ์ด๊ณผํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ก์จ ๊ฐ ์ผ์ด์ค ๋ด์ ์ค์ฒฉ๋ `if` ๋ฌธ์ด ํ์ ์๊ฒ ๋ฉ๋๋ค.
์์ 3: ํ์จ์ ์ด์ฉํ ๋ค์ํ ํตํ ์ฒ๋ฆฌ
๊ฑฐ๋ ํตํ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ์จ์ ์ ์ฉํด์ผ ํ๋ ๋ ๋ณต์กํ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ด ์๋ค. ์ด๋ ํจํด ๋งค์นญ๊ณผ ์กฐ๊ฑด๋ถ ํ๊ฐ ๋ชจ๋๋ฅผ ํ์๋ก ํฉ๋๋ค:
function processTransaction(transaction) {
match(transaction)
.with(
{ currency: "USD", amount: P.number.gt(0) },
() => {
console.log(`USD ๊ฑฐ๋ ์ฒ๋ฆฌ ์ค: ${transaction.amount}`);
return transaction.amount;
}
)
.with(
{ currency: "EUR", amount: P.number.gt(0) },
() => {
const amountInUSD = transaction.amount * 1.1; // 1 ์ ๋ก = 1.1 ๋ฌ๋ฌ๋ก ๊ฐ์
console.log(`EUR ๊ฑฐ๋ ์ฒ๋ฆฌ ์ค: ${transaction.amount} EUR (${amountInUSD} USD๋ก ๋ณํ๋จ)`);
return amountInUSD;
}
)
.with(
{ currency: "GBP", amount: P.number.gt(0) },
() => {
const amountInUSD = transaction.amount * 1.3; // 1 ํ์ด๋ = 1.3 ๋ฌ๋ฌ๋ก ๊ฐ์
console.log(`GBP ๊ฑฐ๋ ์ฒ๋ฆฌ ์ค: ${transaction.amount} GBP (${amountInUSD} USD๋ก ๋ณํ๋จ)`);
return amountInUSD;
}
)
.otherwise(() => {
console.log("์ง์ํ์ง ์๋ ํตํ ๋๋ ์ ํจํ์ง ์์ ๊ฑฐ๋์
๋๋ค.");
return 0;
});
}
const transaction1 = { currency: "USD", amount: 100 };
const transaction2 = { currency: "EUR", amount: 50 };
const transaction3 = { currency: "JPY", amount: 10000 };
console.log(`๊ฑฐ๋ 1 USD ๊ฐ์น: ${processTransaction(transaction1)}`); // ์ถ๋ ฅ: USD ๊ฑฐ๋ ์ฒ๋ฆฌ ์ค: 100; ๊ฑฐ๋ 1 USD ๊ฐ์น: 100
console.log(`๊ฑฐ๋ 2 USD ๊ฐ์น: ${processTransaction(transaction2)}`); // ์ถ๋ ฅ: EUR ๊ฑฐ๋ ์ฒ๋ฆฌ ์ค: 50 EUR (55 USD๋ก ๋ณํ๋จ); ๊ฑฐ๋ 2 USD ๊ฐ์น: 55
console.log(`๊ฑฐ๋ 3 USD ๊ฐ์น: ${processTransaction(transaction3)}`); // ์ถ๋ ฅ: ์ง์ํ์ง ์๋ ํตํ ๋๋ ์ ํจํ์ง ์์ ๊ฑฐ๋์
๋๋ค.; ๊ฑฐ๋ 3 USD ๊ฐ์น: 0
์ด ์์ ๋ `when` ๊ธฐ๋ฅ์ ์ง์ ์ฌ์ฉํ์ง๋ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ํจํด ๋งค์นญ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ์๋๋ฆฌ์ค(๋ค๋ฅธ ํตํ)๋ฅผ ์ฒ๋ฆฌํ๊ณ ํด๋น ๋ก์ง(ํ์จ ๋ณํ)์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. 'when' ์ ์ ์ถ๊ฐํ์ฌ ์กฐ๊ฑด์ ๋์ฑ ๊ตฌ์ฒดํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์์ ์์น๊ฐ ๋ถ๋ฏธ์ธ ๊ฒฝ์ฐ์๋ง EUR์ USD๋ก ๋ณํํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ EUR์ CAD๋ก ๋ณํํ๋๋ก ํ ์ ์์ต๋๋ค.
ํจํด ๋งค์นญ์์ 'When' ์ฌ์ฉ์ ์ด์
- ํฅ์๋ ๊ฐ๋ ์ฑ: ์กฐ๊ฑด๋ถ ๋ ผ๋ฆฌ๋ฅผ ํจํด ๋ด์ ์ง์ ํํํจ์ผ๋ก์จ ์ค์ฒฉ๋ `if` ๋ฌธ์ ํผํ๊ณ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ ์ง๋ณด์์ฑ: 'when'์ ์ฌ์ฉํ ํจํด ๋งค์นญ์ ์ ์ธ์ ํน์ฑ์ ์ฝ๋๋ฅผ ์์ ํ๊ณ ํ์ฅํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ์๋ก์ด ์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ์กฐ๊ฑด์ ์์ ํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํด์ง๋๋ค.
- ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋ ๊ฐ์: ํจํด ๋งค์นญ์ ์ข ์ข ๋ฐ๋ณต์ ์ธ ํ์ ๊ฒ์ฌ ๋ฐ ๋ฐ์ดํฐ ์ถ์ถ ์ฝ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- ํํ๋ ฅ ์ฆ๋: 'when'์ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ์กฐ๊ฑด์ ๊ฐ๊ฒฐํ๊ณ ์ฐ์ํ๊ฒ ํํํ ์ ์์ต๋๋ค.
๊ณ ๋ ค์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ/์ ์ ์ง์: ํจํด ๋งค์นญ ๊ธฐ๋ฅ์ ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ์ ๊ตฌ๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ฒฝ ๋ฐ ์ฌ์ฉ ์ค์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์์ ์ ํ์์ ์ฝ๋ฉ ์คํ์ผ์ ๊ฐ์ฅ ์ ํฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์์ ์ ํํ์ธ์.
- ์ฑ๋ฅ: ํจํด ๋งค์นญ์ด ์ฝ๋ ๊ฐ๋ ์ฑ์ ํฅ์์ํฌ ์ ์์ง๋ง, ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ณต์กํ ํจํด๊ณผ ์กฐ๊ฑด์ ์ ์ฌ์ ์ผ๋ก ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ผ๋ฏ๋ก, ์ฝ๋๋ฅผ ํ๋กํ์ผ๋งํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ต์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์ฝ๋ ๋ช ํ์ฑ: 'when'์ ์ฌ์ฉํ๋๋ผ๋ ์ฝ๋์ ๋ช ํ์ฑ์ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํจํด์ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ์ง๋์น๊ฒ ๋ณต์กํ ์กฐ๊ฑด์ ํผํ์ธ์. ์๋ฏธ ์๋ ๋ณ์ ์ด๋ฆ๊ณผ ์ฃผ์์ ์ฌ์ฉํ์ฌ ํจํด ๋ค์ ์๋ ๋ ผ๋ฆฌ๋ฅผ ์ค๋ช ํ์ธ์.
- ์ค๋ฅ ์ฒ๋ฆฌ: ํจํด ๋งค์นญ ๋ก์ง์ ์๊ธฐ์น ์์ ์ ๋ ฅ ๊ฐ์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ธ์. ์ฌ๊ธฐ์ `otherwise` ์ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ค์ ์ ์ฉ ์ฌ๋ก
'when'์ ์ฌ์ฉํ ํจํด ๋งค์นญ์ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ค์ ์๋๋ฆฌ์ค์ ์ ์ฉ๋ ์ ์์ต๋๋ค:
- ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ: API ์์ฒญ์ด๋ ์ฌ์ฉ์ ์ ๋ ฅ๊ณผ ๊ฐ์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ๊ฐ์ ๊ฒ์ฆํฉ๋๋ค.
- ๋ผ์ฐํ : URL ๋๋ ๊ธฐํ ์์ฒญ ๋งค๊ฐ๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ผ์ฐํ ๋ก์ง์ ๊ตฌํํฉ๋๋ค.
- ์ํ ๊ด๋ฆฌ: ์์ธก ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ๋ฐฉ์์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ์ปดํ์ผ๋ฌ ๊ตฌ์ฑ: ํ์ ๋ฐ ๊ธฐํ ์ปดํ์ผ๋ฌ ๊ตฌ์ฑ ์์๋ฅผ ๊ตฌํํฉ๋๋ค.
- AI ๋ฐ ๋จธ์ ๋ฌ๋: ํน์ง ์ถ์ถ ๋ฐ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ.
- ๊ฒ์ ๊ฐ๋ฐ: ๋ค์ํ ๊ฒ์ ์ด๋ฒคํธ ๋ฐ ํ๋ ์ด์ด ํ๋์ ์ฒ๋ฆฌํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ตญ์ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด ๋ด ์๋ค. 'when'์ ์ฌ์ฉํ ํจํด ๋งค์นญ์ ํตํด ๊ฑฐ๋ ๋ฐ์ ๊ตญ๊ฐ, ํตํ, ๊ธ์ก, ๊ฑฐ๋ ์ ํ(์: ์ ๊ธ, ์ถ๊ธ, ์ด์ฒด)์ ๋ฐ๋ผ ๊ฑฐ๋๋ฅผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํน์ ๊ตญ๊ฐ์์ ๋ฐ์ํ๊ฑฐ๋ ํน์ ๊ธ์ก์ ์ด๊ณผํ๋ ๊ฑฐ๋์ ๋ํด์๋ ๋ค๋ฅธ ๊ท์ ์๊ตฌ์ฌํญ์ด ์์ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ ํจํด ๋งค์นญ, ํนํ ์กฐ๊ฑด๋ถ ํจํด ํ๊ฐ๋ฅผ ์ํ 'when' ์ ๊ณผ ๊ฒฐํฉ๋ ๋, ๋ ํํ๋ ฅ ์๊ณ ๊ฐ๋ ์ฑ ์ข์ผ๋ฉฐ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ ฅํ๊ณ ์ฐ์ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ํจํด ๋งค์นญ์ ํ์ฉํจ์ผ๋ก์จ ๋ณต์กํ ์กฐ๊ฑด๋ถ ๋ ผ๋ฆฌ๋ฅผ ํฌ๊ฒ ๋จ์ํํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ ์ธ ํ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ, ํจํด ๋งค์นญ์ ๊ฐ๋ฐ์์ ๋ฌด๊ธฐ๊ณ ์์ ์ ์ ๋ ์ค์ํ ๋๊ตฌ๊ฐ ๋ ๊ฒ์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ํจํด ๋งค์นญ์ ์ํ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์๋ค์ ํ์ํ๊ณ 'when' ์ ์ ์คํํ์ฌ ๊ทธ ์ ์ฌ๋ ฅ์ ์ต๋ํ ๋ฐ๊ฒฌํด ๋ณด์ธ์. ์ด ๊ฐ๋ ฅํ ๊ธฐ์ ์ ๋ฐ์๋ค์ฌ ์ฌ๋ฌ๋ถ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ฉ ๊ธฐ์ ์ ํ ๋จ๊ณ ๋์ด์ฌ๋ฆฌ์ธ์.